import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts

# 读取 CSV 文件
csv_file = r"python课程设计\课设\数据.csv"  # 替换为你的文件名
df = pd.read_csv(csv_file, sep="\t", encoding="utf-8")  # 根据您的数据使用制表符作为分隔符

# 确保列名无空格或乱码
df.columns = df.columns.str.strip()

# 排序并获取收藏数最高的前 5 本书
top5_books = df.sort_values(by="收藏数", ascending=False).head(5)

# 创建柱状图
bar = (
    Bar()
    .add_xaxis(top5_books["书名"].tolist())  # 横坐标为书名
    .add_yaxis("收藏数", top5_books["收藏数"].tolist())  # 纵坐标为收藏数
    .set_global_opts(
        title_opts=opts.TitleOpts(title="收藏数最高的前5本书"),
        xaxis_opts=opts.AxisOpts(name="书名", axislabel_opts={"rotate": 30}),  # 书名旋转角度
        yaxis_opts=opts.AxisOpts(name="收藏数"),
        toolbox_opts=opts.ToolboxOpts(),  # 添加工具箱
    )
)

# 渲染 HTML 文件
bar.render(r"python课程设计\课设代码\top5_books_by_collection.html")

